package com.bicon.botu.mall.component.service;

import com.baomidou.mybatisplus.service.IService;
import com.bicon.botu.mall.component.dto.DictionaryNodeDTO;
import com.bicon.botu.mall.component.dto.KeyValueDTO;
import com.bicon.botu.mall.component.entity.Dictionary;
import com.bicon.botu.core.base.common.entity.BaseResult;

import java.util.List;

/**
 * <p>
 * 存放常用配置参数、地区、年龄段、性别、指标类型等数据 服务类
 * </p>
 *
 * @author tandk
 * @since 2017-07-31
 */
public interface IComponentDictionaryService extends IService<Dictionary> {
    /**
     * 初始化字典缓存
     *
     * @return
     */
    boolean initDictionaryRedis();

    /**
     * 初始化基础字典缓存
     *
     * @return
     */
    boolean initBaseDictionaryRedis();

    /**
     * 新增字典
     *
     * @return
     */
    boolean addDictionary(Dictionary dictionary);

    /**
     * 删除字典
     *
     * @return
     */
    boolean delDictionary(int id);

    /**
     * 修改字典
     *
     * @return
     */
    boolean updateDictionary(Dictionary dictionary);

    /**
     * 初始化地区字典到redis
     *
     * @return
     */
    boolean initAreaToRedis();

    /**
     * 初始化【擅长领域】到redis
     */

    boolean initAdvantageAreaToRedis();

    /**
     * 从redis中查询省、市、区
     *
     * @param code     查询（省、市、区）对应的code
     * @param parentId 父地区id
     */
    BaseResult findAreaFromRedis(String code, int parentId);

    /**
     * 根据父字典code获取字典集合
     *
     * @param code 父字典code
     * @return 子字典集合
     */
    List<Dictionary> findListByParentCode(String code);

    /**
     * 根据父id查询所有node结构子字典（比如：省、市、区）
     *
     * @return 子字典集合
     */
    List<DictionaryNodeDTO> findAllDictionaryNode(Integer parentId, String code);

    /**
     * 根据id查询字典
     *
     * @return 字典
     */
    KeyValueDTO<String> findDictionaryFromRedis(String id);
}
